home *** CD-ROM | disk | FTP | other *** search
- # Copyright (c) 2004-2005 Gentoo Foundation
- # Distributed under the terms of the GNU General Public License v2
- # $Header$
-
- # Contributed by Roy Marples (uberlord@gentoo.org)
-
- # char* adsl_provides(void)
- #
- # Returns a string to change module definition for starting up
- adsl_provides() {
- echo "adsl"
- }
-
- # void adsl_depend(void)
- #
- # Sets up the dependancies for the module
- adsl_depend() {
- after interface
- before dhcp
- }
-
- # bool adsl_check_installed(void)
- #
- # Returns 1 if rp-pppoe is installed, otherwise 0
- adsl_check_installed() {
- [[ -x /usr/sbin/adsl-start || -x /usr/sbin/pppoe-start ]] && return 0
- ${1:-false} && eerror "For ADSL support, emerge net-dialup/rp-pppoe"
- return 1
- }
-
- # bool adsl_check_depends(void)
- #
- # Checks to see if we have the needed functions
- adsl_check_depends() {
- local f
-
- for f in interface_variable; do
- [[ $( type -t ${f} ) == function ]] && continue
- eerror "adsl: missing required function ${f}\n"
- return 1
- done
-
- return 0
- }
-
- # bool adsl_setup_vars(char *iface)
- #
- # Checks to see if the ADSL script has been created or not
- adsl_setup_vars() {
- local iface=${1} ifvar=$( interface_variable ${1} ) startstop=${2} cfgexe
-
- if [[ -x /usr/sbin/pppoe-start ]]; then
- exe=/usr/sbin/pppoe-${startstop}
- cfgexe=pppoe-setup
- else
- exe=/usr/sbin/adsl-${startstop}
- cfgexe=adsl-setup
- fi
-
- # Decide which configuration to use. Hopefully there is an
- # interface-specific one
- cfgfile="/etc/ppp/pppoe-${iface}.conf"
- [[ -f ${cfgfile} ]] || cfgfile="/etc/ppp/pppoe.conf"
-
- if [[ ! -f ${cfgfile} ]]; then
- eerror "no pppoe.conf file found!"
- eerror "Please run ${cfgexe} to create one"
- return 1
- fi
-
- # Might or might not be set in conf.d/net
- eval user=\"\$\{adsl_user_${ifvar}\}\"
- [[ -z ${user} ]] && eval user=\"\$\{user_${ifvar}\}\"
-
- return 0
- }
-
- # bool adsl_start(char *iface)
- #
- # Start ADSL on an interface by calling adsl-start
- #
- # Returns 0 (true) when successful, non-zero otherwise
- adsl_start() {
- local iface=${1} exe cfgfile user
-
- adsl_setup_vars ${iface} start || return 1
-
- # Start ADSL with the cfgfile, but override ETH and PIDFILE
- einfo "Starting ADSL for ${iface}"
- ${exe} <(cat "${cfgfile}"; \
- echo "ETH=${iface}"; \
- echo "PIDFILE=/var/run/rp-pppoe-${iface}.pid"; \
- [[ -n ${user} ]] && echo "USER=${user}") \
- >${devnull}
- eend $?
- }
-
- # bool adsl_stop(char *iface)
- #
- # Stop ADSL on an interface by calling adsl-stop
- #
- # Returns 0 (true) when there appears to be an ADSL interface to stop,
- # and we attempted to stop it. This does not necessarily indicate
- # that adsl-stop was successful. Returns non-zero when there was
- # nothing to stop.
- adsl_stop() {
- local iface=${1} exe cfgfile user
-
- adsl_check_installed || return 1
- [[ ! -f /var/run/rp-pppoe-${iface}.pid ]] && return 1
-
- adsl_setup_vars ${iface} stop || return 1
-
- einfo "Stopping ADSL for ${iface}"
- ${exe} <(cat "${cfgfile}"; \
- echo "ETH=${iface}"; \
- echo "PIDFILE=/var/run/rp-pppoe-${iface}.pid"; \
- [[ -n ${user} ]] && echo "USER=${user}") \
- >${devnull}
- eend $?
-
- return 0 # we did *attempt* to stop adsl
- }
-